	/*
	 *	Nachfolgend werden alle Bilder (der Spielfiguren -> also Blau, Grün, Rot und Gelb) in einem Array gespeichert,
	 *	damit die entsprechenden Bilder vom Browser gleich mitgeladen werden und nachher beim Spiel keines fehlt.
	 *
	 */
icons = new Array();
icons[0] = new Image();
icons[0].src = "images/figures/green.png";
icons[1] = new Image();
icons[1].src = "images/figures/red.png";
icons[2] = new Image();
icons[2].src = "images/figures/yellow.png";
icons[3] = new Image();
icons[3].src = "images/figures/blue.png";

	/*
	 *	Das Objekt des Spielers dient der Verwaltung der Spielfiguren. Es beinhaltet die Funktionen, die die Figuren
	 *	zum leben erwecken lassen. Diese sind:
	 *		->	Spieler.create(farbe, name)
	 *			=>	Erstellt Figuren, übernimmt die Farbe und den Namen des Spielers
	 *				Positioniert die Spielfiguren auf die Startfelder und positioniert den Namen unter/über dem Haus
	 *
	 *		->	Spieler.ueberpruefeZielfeld(figur)
	 *			=>	Überprüft, ob die Figur den Sprung von Feld 40 auf Feld 1 machen muss! 
	 *				(Feld 1 => Blaues Startfeld; Feld 40 => Feld vor blauem Ziel und Startfeld)
	 *
	 *		->	Spieler.reSet()
	 *			=>	Setzt die Figuren wieder auf ihre Felder nache einem Resize! Auch die Namen werden wieder unter/über
	 *				die Häuser gesetzt!
	 *
	 *		->	Spieler.jump(figur)
	 *			=>	Diese Funktion führt den eigentlichen Sprung der Elemente durch
	 *
	 *		->	Spieler.eigeneFigurAufFeld(zielfeld)
	 *			=>	Mit dieser Funktion kann geprüft werden, ob eine eigene Figur auf dem "zielfeld", also dem Feld,
	 *				wo die Figur hinspringen soll, steht
	 *
	 *		->	Spieler.andereFigurAufFeld(zielfeld)
	 *			=>	Diese Funktion untersucht das Zielfeld auf Figuren anderer Spieler
	 *
	 *		->	Spieler.rausschmeissen(raus)
	 *			=>	Diese Funktion schmeißt die Figuren anderer Spieler zurück ins Haus, wenn sie geschlagen wurden.
	 *				Dies geschieht anhand der Angaben im übergebenen Array raus. Im ersten Feld steht die Spielernummer und
	 *				im zweiten Feld steht die Figurnummer des Spielers. An diesen Informationen wird erkannt, um welche Figur
	 *				es sich handelt und auf welches Feld im Haus sie springen muss (damit die Felder nciht doppelt belegt sind).
	 *
	 *		->	Spieler.insZiel(figur)
	 *			=>	Mit dieser Funktion wird überprüft, ob die Spielfigur ins Ziel abbiegen muss
	 *
	 *		->	Spieler.springInsZiel(figur, anzahl)
	 *			=>	Diese Funktion führt den Sprung vom Spielfeld ins Ziel durch
	 *
	 *		->	Spieler.springImZiel(figur, anzahl)
	 *			=>	Durch diese Funktion können sich die Spielfiguren im Ziel bewegen
	 *
	 *		->	Spieler.figurAufSpielfeld()
	 *			=>	Hier wird überprüft, ob noch eine Figur des aktuellen Spielers auf dem Spielfeld steht
	 *
	 *		->	Spieler.pruefeZiel()
	 *			=>	Hier wird überprüft, wie viele Figuren eines Spielers im Ziel stehen und wenn alle im Ziel sind,
	 *				dann wird das Spiel beendet und der Gewinner wird ausgegeben.
	 *
	 *		->	Spieler.eigeneFigurImZielFeld(figur, ziel)
	 *			=>	Hiermit wird geprüft, ob bereits eine Figur auf dem Ziel-Feld steht.
	 *
	 *		->	Spieler.figurAufStartfeld(augenzahl)
	 *			=>	In dieser Funktion wird geprüft, ob eine Figur auf dem Startfeld steht, wenn ja, dann wird noch 
	 *				geprüft, ob diese Figur bewegt werden kann
	 *
	 *		->	Spieler.spring(figur)
	 *			=>	In dieser Funktion findet das eigentlich Spiel statt. Hier sind alle Abfragen zu finden, die die
	 *				Spielfiguren steuern
	 *
	 *		->	Spieler.bewegen(figurnummer)
	 *			=>	Diese Funktion wird aus der "spielfeld.html" aufgerufen. Hier wird anhand der übergebenen Figur-
	 *				nummer die Funktion Spieler.spring(figur) aufgerufen!
	 *
	 */
function Spieler(nummer) {
	this.number = nummer;
	this.image = new Image();
	this.figuren = new Array();
	this.haus = 4;
	this.ziel = 0;
	this.startfeld = false;
	this.anzahlWuerfe = 3;
	this.color = "";
	this.spielerName = "";
	/*
	 * this.create = function(farbe, name)
	 * setzt die Figuren auf ihre Startfelder, legt die Farben der Spieler fest und schreibt die Namen der Spieler auf das
	 * Spielfeld
	 *
	 */
	this.create = function(farbe, name) {
		this.color = farbe;
		this.spielerName = name;
		startnummer = 0;
		
		if (this.color == "red") {
			this.image = icons[1];
			startnummer = 31;
			$("#divNameRot").css("visibility", "visible");
			$("#divNameRot").css("top", getElementAbsolutePos(document.getElementById("nameRot")).y);
			$("#divNameRot").css("left", getElementAbsolutePos(document.getElementById("nameRot")).x);
			$("#divNameRot").text(this.spielerName);
		}
		if (this.color == "green") {
			this.image = icons[0];
			startnummer = 21;
			$("#divNameGruen").css("visibility", "visible");
			$("#divNameGruen").css("top", getElementAbsolutePos(document.getElementById("nameGruen")).y);
			$("#divNameGruen").css("left", getElementAbsolutePos(document.getElementById("nameGruen")).x);
			$("#divNameGruen").text(this.spielerName);
		}
		if (this.color == "blue") {
			this.image = icons[3];
			startnummer = 1;
			$("#divNameBlau").css("visibility", "visible");
			$("#divNameBlau").css("top", getElementAbsolutePos(document.getElementById("nameBlau")).y);
			$("#divNameBlau").css("left", getElementAbsolutePos(document.getElementById("nameBlau")).x);
			$("#divNameBlau").text(this.spielerName);
		}
		if (this.color == "yellow") {
			this.image = icons[2];
			startnummer = 11;
			$("#divNameGelb").css("visibility", "visible");
			$("#divNameGelb").css("top", getElementAbsolutePos(document.getElementById("nameGelb")).y);
			$("#divNameGelb").css("left", getElementAbsolutePos(document.getElementById("nameGelb")).x);
			$("#divNameGelb").text(this.spielerName);
		}
		
		for (i = 0; i < 4; i++) {
			y = i + 1;
			this.figuren[i] = new Spielfigur(y, "haus" + this.color + y, "haus", "Spieler" + this.number + "Fig" + y, startnummer);
		}
		
		for (i = 0; i < 4; i++) {
			y = i + 1;
			$("#Spieler" + this.number + "Fig" + y).attr("src", eval("this.image.src"));
			$("#Spieler" + this.number + "Fig" + y).css("visibility", "visible");
			this.jump(this.figuren[i]);
		}
	}
	
	this.ueberpruefeZielfeld = function (figur) {
		if (figur.spielfeld > 40) {
			figur.spielfeld = figur.spielfeld - 40;
		}
		return figur;
	}
	
	this.reSet = function () {
		for (i = 0; i < 4; i++) {
			this.jump(this.figuren[i]);
		}
		if (this.color == "red") {
			$("#divNameRot").css("top", getElementAbsolutePos(document.getElementById("nameRot")).y);
			$("#divNameRot").css("left", getElementAbsolutePos(document.getElementById("nameRot")).x);
		}
		if (this.color == "green") {
			$("#divNameGruen").css("top", getElementAbsolutePos(document.getElementById("nameGruen")).y);
			$("#divNameGruen").css("left", getElementAbsolutePos(document.getElementById("nameGruen")).x);
		}
		if (this.color == "blue") {
			$("#divNameBlau").css("top", getElementAbsolutePos(document.getElementById("nameBlau")).y);
			$("#divNameBlau").css("left", getElementAbsolutePos(document.getElementById("nameBlau")).x);
		}
		if (this.color == "yellow") {
			$("#divNameGelb").css("top", getElementAbsolutePos(document.getElementById("nameGelb")).y);
			$("#divNameGelb").css("left", getElementAbsolutePos(document.getElementById("nameGelb")).x);
		}
	}
	
	this.jump = function (figur) {
		figur = this.ueberpruefeZielfeld(figur);
		$("#" + figur.bild).css("top", getElementAbsolutePos(document.getElementById(figur.spielfeld)).y);
		$("#" + figur.bild).css("left", getElementAbsolutePos(document.getElementById(figur.spielfeld)).x);
		return figur;
	}
	
	this.eigeneFigurAufFeld = function (zielfeld) {
		if (zielfeld > 40) {
			zielfeld = zielfeld - 40;
		}
		for ( i = 0; i < 4; i++ ) {
			if (this.figuren[i].spielfeld == zielfeld) {
				return true;
			}
		}
		return false;
	}
	
	this.andereFigurAufFeld = function (zielfeld) {
		if (zielfeld > 40) {
			zielfeld = zielfeld - 40;
		}
		rueckgabe = new Array();
		for ( i = 1; i <= anzahlSpieler; i++ ) {
			for (y = 0; y < 4; y++) {
				switch (i) {
				case 1:
					if (this.number != 1) {
						if (s1.figuren[y].spielfeld == zielfeld) {
							rueckgabe[0] = 1;
							rueckgabe[1] = y;
							return rueckgabe;
						}
					}
				break;
				case 2:
					if (this.number != 2) {
						if (s2.figuren[y].spielfeld == zielfeld) {
							rueckgabe[0] = 2;
							rueckgabe[1] = y;
							return rueckgabe;
						}
					}
				break;
				case 3:
					if (this.number != 3) {
						if (s3.figuren[y].spielfeld == zielfeld) {
							rueckgabe[0] = 3;
							rueckgabe[1] = y;
							return rueckgabe;
						}
					}
					break;
				case 4:
					if (this.number != 4) {
						if (s4.figuren[y].spielfeld == zielfeld) {
							rueckgabe[0] = 4;
							rueckgabe[1] = y;
							return rueckgabe;
						}
					}
				break;
				}
			}
		}
		rueckgabe[0] = -1;
		return rueckgabe;
	}
	
	this.rausschmeissen = function(raus) {
		feld = raus[1] + 1;
		switch (raus[0]) {
			case 1:
				s1.figuren[raus[1]].spielfeld = "haus" + s1.color + feld;
				s1.figuren[raus[1]].spielfeldtyp = "haus";
				this.jump(s1.figuren[raus[1]]);
				s1.haus++;
				if (s1.haus + s1.ziel == 4) {
					s1.anzahlWuerfe = 3;
				}
				break;
			case 2:
				s2.figuren[raus[1]].spielfeld = "haus" + s2.color + feld;
				s2.figuren[raus[1]].spielfeldtyp = "haus";
				this.jump(s2.figuren[raus[1]]);
				s2.haus++;
				if (s2.haus + s2.ziel == 4) {
					s2.anzahlWuerfe = 3;
				}
				break;
			case 3:
				s3.figuren[raus[1]].spielfeld = "haus" + s3.color + feld;
				s3.figuren[raus[1]].spielfeldtyp = "haus";
				this.jump(s3.figuren[raus[1]]);
				s3.haus++;
				if (s3.haus + s3.ziel == 4) {
					s3.anzahlWuerfe = 3;
				}
				break;
			case 4:
				s4.figuren[raus[1]].spielfeld = "haus" + s4.color + feld;
				s4.figuren[raus[1]].spielfeldtyp = "haus";
				this.jump(s4.figuren[raus[1]]);
				s4.haus++;
				if (s4.haus + s4.ziel == 4) {
					s4.anzahlWuerfe = 3;
				}
				break;
		}
	}
	
	this.insZiel = function (figur) {
		zielfeld = figur.spielfeld + wuerfelzahl;
		letztesSpielfeld = figur.startfeldnummer - 1;
		if (letztesSpielfeld == 0) {
			letztesSpielfeld = 40;
		}
		if (figur.spielfeld <= letztesSpielfeld) {
			if (zielfeld >= letztesSpielfeld) {
				ziel = zielfeld - letztesSpielfeld;
				if (ziel > 4) {
					if (ziel == 5 || ziel == 6) {
						alert("Diese Figur kann nicht gesetzt werden");
						return -3;
					} else {
						return -1;
					}
				} else {
					if (ziel <= 0) {
						return 0;
					} else {
						return ziel;
					}
				}
			}
			return 0;
		} else {
			return 0;
		}
	}
	
	this.springInsZiel = function (figur, anzahl) {
		figur.spielfeld = "ziel" + this.color + anzahl;
		startposition = 4 + this.color.length;
		this.pruefeZiel();
		figur = this.jump(figur);
		return figur;
	}
	
	this.springImZiel = function (figur, anzahl) {
		startposition = 4 + this.color.length;
		feld = figur.spielfeld.slice(startposition, startposition+1);
		feld = parseInt(feld, 10) + parseInt(anzahl, 10);
		figur.spielfeld = "ziel" + this.color + feld;
		figur = this.jump(figur);
		
		this.pruefeZiel();
		return figur;
	}
	
	this.figurAufSpielfeld = function() {
		for (i = 0; i < 4; i++) {
			if (this.figuren[i].spielfeldtyp == "spielfeld") {
				return true;
			}
		}
		return false;
	}
	
	this.pruefeZiel = function() {
		vier = false;
		drei = false;
		zwei = false;
		eins = false;
		for (i = 0; i < 4; i++) {
			if (this.figuren[i].spielfeld == "ziel" + this.color + "4") {
				vier = true;
			}
			if (this.figuren[i].spielfeld == "ziel" + this.color + "3") {
				drei = true;
			}
			if (this.figuren[i].spielfeld == "ziel" + this.color + "2") {
				zwei = true;
			}
			if (this.figuren[i].spielfeld == "ziel" + this.color + "1") {
				eins = true;
			}
		}
		
		if (vier && drei && zwei && eins) {
			gewinner = this.spielerName;
			STOP = true;
			this.ziel = 4;
		}
		if (vier && drei && zwei && !this.figurAufSpielfeld()) {
			this.anzahlWuerfe = 3;
			this.ziel = 3;
		} else {
			if (vier && drei && zwei) {
				this.ziel = 3;
			}
			if (vier && drei && !eins && !this.figurAufSpielfeld()) {
				if (vier && drei) {
					this.ziel = 2;
				}
				this.anzahlWuerfe = 3;
				this.ziel = 2;
			} else {
				if (vier && !eins && !zwei && !this.figurAufSpielfeld()) {
					this.anzahlWuerfe = 3;
					this.ziel = 1;
				} else {
					if (vier) {
						this.ziel = 1;
					}
				}
			}
		}
	}
	
	this.eigeneFigurImZielFeld = function (figur, ziel) {
		zielfeld = "ziel" + this.color + ziel;
		for (i = 0; i < 4; i++) {
			if (this.figuren[i].spielfeld == zielfeld) {
				return true;
				alert("eigeneFigurImZielFeld = true");
			}
		}
		return false;
		alert("eigeneFigurImZielFeld = true");
	}
	
	this.figurAufStartfeld = function (augenzahl) {
		if (this.startfeld == true) {
			for (i = 0; i < 4; i++) {
				if (this.figuren[i].spielfeldtyp == "startfeld") {
					if (this.eigeneFigurAufFeld(this.figuren[i].spielfeld + augenzahl)) {
						return false;
					} else {
						return true;
					}
				}
			}
			return true;
		}
		return false;
	}
	
	this.spring = function (figur) {
		if (figur.spielfeldtyp == "haus" && wuerfelzahl == 6 && this.startfeld == false) {
			figur.spielfeld = figur.startfeldnummer;
			figur.spielfeldtyp = "startfeld";
			figur = this.jump(figur);
			this.haus--;
			this.startfeld = true;
			nochmalwuerfeln = true;
			gewuerfelt = false;
		} else {
			if (figur.spielfeldtyp == "startfeld" && this.eigeneFigurAufFeld(figur.spielfeld + wuerfelzahl) == false) {
				this.startfeld = false;
				if (wuerfelzahl == 6) {
					ziel = this.insZiel(figur);
					if (ziel < 0) {
						alert("Bitte wählen Sie eine andere Figur");
					} else {
						if (ziel == 0) {
							figur.spielfeld = figur.spielfeld + wuerfelzahl;
							figur.spielfeldtyp = "spielfeld";
							figur = this.jump(figur);
							nochmalwuerfeln = true;
							gewuerfelt = false;
						} else {
							if (this.eigeneFigurImZielFeld(figur, wuerfelzahl) == false) {
								figur.spielfeldtyp = "zielfeld";
								figur = this.springInsZiel(figur, ziel);
								nochmalwuerfeln = true;
								gewuerfelt = false;
							}
						}
					}
				} else {
					ziel = this.insZiel(figur);
					if (ziel < 0) {
						if (this.figurAufSpielfeld) {
							alert("Bitte wählen Sie eine andere Figur");
						} else {
							switchSpieler();
						}
					} else {
						if (ziel == 0) {
							figur.spielfeld = figur.spielfeld + wuerfelzahl;
							figur.spielfeldtyp = "spielfeld";
							figur = this.jump(figur);
							switchSpieler();
						} else {
							if (this.eigeneFigurImZielFeld(figur, wuerfelzahl) == false) {
								figur.spielfeldtyp = "zielfeld";
								figur = this.springInsZiel(figur, ziel);
								switchSpieler();
							}
						}
					}
				}
			} else {
				if (figur.spielfeldtyp == "spielfeld" && this.figurAufStartfeld(wuerfelzahl) == false && this.eigeneFigurAufFeld(figur.spielfeld + wuerfelzahl) == false) {
					if (wuerfelzahl == 6) {
						ziel = this.insZiel(figur);
						if (ziel < 0) {
							if (this.figurAufSpielfeld) {
								alert("Bitte wählen Sie eine andere Figur");
							} else {
								switchSpieler();
							}
						} else {
							if (ziel == 0) {
								figur.spielfeld = figur.spielfeld + wuerfelzahl;
								figur.spielfeldtyp = "spielfeld";
								figur = this.jump(figur);
								nochmalwuerfeln = true;
								gewuerfelt = false;
							} else {
								if (this.eigeneFigurImZielFeld(figur, wuerfelzahl) == false) {
									figur.spielfeldtyp = "zielfeld";
									figur = this.springInsZiel(figur, ziel);
									nochmalwuerfeln = true;
									gewuerfelt = false;
								}
							}
						}
					} else {
						ziel = this.insZiel(figur);
						if (ziel < 0) {
							if (this.figurAufSpielfeld) {
								alert("Bitte wählen Sie eine andere Figur");
							} else {
								switchSpieler();
							}
						} else {
							if (ziel == 0) {
								figur.spielfeld = figur.spielfeld + wuerfelzahl;
								figur.spielfeldtyp = "spielfeld";
								figur = this.jump(figur);
								switchSpieler();
							} else {
								if (this.eigeneFigurImZielFeld(figur, wuerfelzahl) == false) {
									figur.spielfeldtyp = "zielfeld";
									figur = this.springInsZiel(figur, ziel);
									switchSpieler();
								}
							}
						}
					}
				} else {
					if (figur.spielfeldtyp == "zielfeld" && this.startfeld == false && this.eigeneFigurImZielFeld(figur, wuerfelzahl) == false) {
						if (figur.spielfeld == "ziel" + this.color + "1") {
							switch (wuerfelzahl) {
							case 1:
								if (this.ziel <= 3) {
									figur = this.springImZiel(figur, wuerfelzahl);
									switchSpieler();
								}
							break;
							case 2:
								if (this.ziel <= 2) {
									figur = this.springImZiel(figur, wuerfelzahl);
									switchSpieler();
								}
							break;
							case 3:
								if (this.ziel <= 1) {
									figur = this.springImZiel(figur, wuerfelzahl);
									switchSpieler();
								}
							break;
							case 4:
							case 5:
							case 6:
								if (! this.figurAufSpielfeld()) {
									switchSpieler();
								}
							break;
							}
						} else {
							if (figur.spielfeld == "ziel" + this.color + "2") {
								switch (wuerfelzahl) {
								case 1:
									if (this.ziel <= 3) {
										figur = this.springImZiel(figur, wuerfelzahl);
										switchSpieler();
									}
								break;
								case 2:
									if (this.ziel <= 2) {
										figur = this.springImZiel(figur, wuerfelzahl);
										switchSpieler();
									}
								break;
								case 3:
								case 4:
								case 5:
								case 6:
									if (! this.figurAufSpielfeld()) {
										switchSpieler();
									}
								break;
								}
							} else {
								if (figur.spielfeld == "ziel" + this.color + "3") {
									switch (wuerfelzahl) {
									case 1:
										if (this.ziel <= 3) {
											figur = this.springImZiel(figur, wuerfelzahl);
											switchSpieler();
										}
									break;
									case 2:
									case 3:
									case 4:
									case 5:
									case 6:
										if (! this.figurAufSpielfeld()) {
											switchSpieler();
										}
									break;
									}
								} else {
									if (figur.spielfeld == "ziel" + this.color + "4") {
										if (! this.figurAufSpielfeld()) {
											switchSpieler();
										}
									}
								}
							}
						}
					}
				}
			}
		}
		raus = this.andereFigurAufFeld(figur.spielfeld);
		if (raus[0] != -1) {
			this.rausschmeissen(raus);
		}
		return figur;
	}
	
	/*
	 *	Diese Funktion ("this.bewegen") wird aus der HTML-Seite aufgerufen, indem man auf eine Spielfigur klickt.
	 *	
	 *	Sie fragt ab, ob bereits gewürfelt wurde und ob der Spieler auch momentan am Zug ist, dessen Figur angeklickt
	 *	wurde. Mit Hilfe der übergebenen Figurnummer wird dann, wenn beide Bedingungen erfüllt wurden, entsprechend
	 *	bewegt mit Hilfe der Funktion "this.spring"!
	 *
	 */
	this.bewegen = function(figurnummer) {
		if (gewuerfelt == true && aktiverSpieler == this.number) {
			this.figuren[figurnummer - 1] = this.spring(this.figuren[figurnummer - 1]);
		}
	}
}

	/*
	 *	Das Objekt der Spielfigur erleichtert die Speicherung/Überprüfung der Positionen der einzelnen Spielfiguren.
	 *	Es wird in der Funktion "Spieler.create" erzeugt!
	 *
	 */

function Spielfigur(number, spielfeld, spielfeldtyp, bild, startfeldnummer) {
	this.number = number;
	this.bild = bild;
	this.spielfeld = spielfeld;
	this.spielfeldtyp = spielfeldtyp;
	this.startfeldnummer = startfeldnummer;
}

